package com.lwt.codetop.twoPointers;
// 415. 字符串相加

/**
 * 思路：模拟，模拟加法
 *      开两个指针，从后遍历然后进行逐位相加，注意进位即可。
 *      注意特判最后是否还有进位
 */
public class AddStrings {
    public static void main(String[] args) {
        // 构建测试用例
        String num1 = "11";
        String num2 = "123";

        String res = addStrings(num1, num2);
        System.out.println(res);
    }

    /**
     * 模拟加法
     * @param num1
     * @param num2
     * @return
     */
    private static String addStrings(String num1, String num2) {
        String res = "";
        int n = num1.length(), m = num2.length();
        int i = n - 1, j = m - 1;
        int s = 0, t = 0;
        while(i >= 0 || j >= 0){
            s += t;
            if(i >= 0) s += num1.charAt(i) - '0'; // 必须if判断的，因为字符可能不等长
            if(j >= 0) s += num2.charAt(j) - '0';
            i -= 1;
            j -= 1;

            // 答案拼接
            res = s % 10 + res;
            // 进位
            t = s / 10;
            // 为下一次对位和准备
            s = 0;
        }
        if(t != 0) res = "1" + res;
        return res;
    }
}
